{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 检索器的使用\n",
    "\n",
    "## 1、默认检索器使用相似性搜索"
   ],
   "id": "3127dcdaa7a87878"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-06T07:20:32.453348Z",
     "start_time": "2025-08-06T07:20:28.752479Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 1.导入相关依赖\n",
    "from langchain_community.document_loaders import TextLoader\n",
    "from langchain_community.vectorstores import FAISS\n",
    "from langchain_openai import OpenAIEmbeddings\n",
    "from langchain_text_splitters import CharacterTextSplitter\n",
    "import os\n",
    "import dotenv\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "\n",
    "# 2.定义文档加载器\n",
    "loader = TextLoader('./asset/load/09-ai1.txt',encoding=\"utf-8\")\n",
    "\n",
    "# 3.加载文档\n",
    "documents = loader.load()\n",
    "\n",
    "# 4.定义文本切割器\n",
    "text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)\n",
    "\n",
    "# 5.切割文档\n",
    "docs = text_splitter.split_documents(documents)\n",
    "\n",
    "# 6.定义嵌入模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "embeddings = OpenAIEmbeddings(\n",
    "    model=\"text-embedding-3-large\"\n",
    ")\n",
    "\n",
    "# 7.将文档存储到向量数据库中\n",
    "db = FAISS.from_documents(docs, embeddings)\n",
    "\n",
    "# 8.从向量数据库中得到检索器\n",
    "retriever = db.as_retriever()\n",
    "\n",
    "# 9.使用检索器检索\n",
    "docs = retriever.invoke(\"深度学习是什么？\")\n",
    "\n",
    "print(len(docs))\n",
    "\n",
    "# 10.得到结果\n",
    "for  doc  in  docs:\n",
    "    print(f\"⭐{doc}\")"
   ],
   "id": "818ecd6d4552397b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "⭐page_content='人工智能综述：发展、应用与未来展望\n",
      "\n",
      "摘要\n",
      "人工智能（Artificial Intelligence，AI）作为计算机科学的一个重要分支，近年来取得了突飞猛进的发展。本文综述了人工智能的发展历程、核心技术、应用领域以及未来发展趋势。通过对人工智能的定义、历史背景、主要技术（如机器学习、深度学习、自然语言处理等）的详细介绍，探讨了人工智能在医疗、金融、教育、交通等领域的应用，并分析了人工智能发展过程中面临的挑战与机遇。最后，本文对人工智能的未来发展进行了展望，提出了可能的突破方向。\n",
      "\n",
      "1. 引言\n",
      "人工智能是指通过计算机程序模拟人类智能的一门科学。自20世纪50年代诞生以来，人工智能经历了多次起伏，近年来随着计算能力的提升和大数据的普及，人工智能技术取得了显著的进展。人工智能的应用已经渗透到日常生活的方方面面，从智能手机的语音助手到自动驾驶汽车，从医疗诊断到金融分析，人工智能正在改变着人类社会的运行方式。\n",
      "\n",
      "2. 人工智能的发展历程\n",
      "2.1 早期发展\n",
      "人工智能的概念最早可以追溯到20世纪50年代。1956年，达特茅斯会议（Dartmouth Conference）被认为是人工智能研究的正式开端。在随后的几十年里，人工智能研究经历了多次高潮与低谷。早期的研究主要集中在符号逻辑和专家系统上，但由于计算能力的限制和算法的不足，进展缓慢。\n",
      "2.2 机器学习的兴起\n",
      "20世纪90年代，随着统计学习方法的引入，机器学习逐渐成为人工智能研究的主流。支持向量机（SVM）、决策树、随机森林等算法在分类和回归任务中取得了良好的效果。这一时期，机器学习开始应用于数据挖掘、模式识别等领域。\n",
      "2.3 深度学习的突破\n",
      "2012年，深度学习在图像识别领域取得了突破性进展，标志着人工智能进入了一个新的阶段。深度学习通过多层神经网络模拟人脑的工作方式，能够自动提取特征并进行复杂的模式识别。卷积神经网络（CNN）、循环神经网络（RNN）和长短期记忆网络（LSTM）等深度学习模型在图像处理、自然语言处理、语音识别等领域取得了显著成果。' metadata={'source': './asset/load/09-ai1.txt'}\n",
      "⭐page_content='3. 人工智能的核心技术\n",
      "3.1 机器学习\n",
      "机器学习是人工智能的核心技术之一，通过算法使计算机从数据中学习并做出决策。常见的机器学习算法包括监督学习、无监督学习和强化学习。监督学习通过标记数据进行训练，无监督学习则从未标记数据中寻找模式，强化学习则通过与环境交互来优化决策。\n",
      "3.2 深度学习\n",
      "深度学习是机器学习的一个子领域，通过多层神经网络进行特征提取和模式识别。深度学习在图像识别、自然语言处理、语音识别等领域取得了显著成果。常见的深度学习模型包括卷积神经网络（CNN）、循环神经网络（RNN）和长短期记忆网络（LSTM）。\n",
      "3.3 自然语言处理\n",
      "自然语言处理（NLP）是人工智能的一个重要分支，致力于使计算机能够理解和生成人类语言。NLP技术广泛应用于机器翻译、情感分析、文本分类等领域。近年来，基于深度学习的NLP模型（如BERT、GPT）在语言理解任务中取得了突破性进展。\n",
      "3.4 计算机视觉\n",
      "计算机视觉是人工智能的另一个重要分支，致力于使计算机能够理解和处理图像和视频。计算机视觉技术广泛应用于图像识别、目标检测、人脸识别等领域。深度学习模型（如CNN）在计算机视觉任务中取得了显著成果。\n",
      "\n",
      "4. 人工智能的应用领域\n",
      "4.1 医疗健康\n",
      "人工智能在医疗健康领域的应用包括疾病诊断、药物研发、个性化医疗等。通过分析医学影像和患者数据，人工智能可以帮助医生更准确地诊断疾病，提高治疗效果。\n",
      "4.2 金融\n",
      "人工智能在金融领域的应用包括风险评估、欺诈检测、算法交易等。通过分析市场数据和交易记录，人工智能可以帮助金融机构做出更明智的决策，提高运营效率。\n",
      "4.3 教育\n",
      "人工智能在教育领域的应用包括个性化学习、智能辅导、自动评分等。通过分析学生的学习数据，人工智能可以为学生提供个性化的学习建议，提高学习效果。\n",
      "4.4 交通\n",
      "人工智能在交通领域的应用包括自动驾驶、交通管理、智能导航等。通过分析交通数据和路况信息，人工智能可以帮助优化交通流量，提高交通安全。' metadata={'source': './asset/load/09-ai1.txt'}\n",
      "⭐page_content='5. 人工智能的挑战与机遇\n",
      "5.1 挑战\n",
      "人工智能发展过程中面临的主要挑战包括数据隐私、算法偏见、安全性问题等。数据隐私问题涉及到个人数据的收集和使用，算法偏见问题则涉及到算法的公平性和透明度，安全性问题则涉及到人工智能系统的可靠性和稳定性。\n",
      "5.2 机遇\n",
      "尽管面临挑战，人工智能的发展也带来了巨大的机遇。人工智能技术的进步将推动各行各业的创新，提高生产效率，改善生活质量。未来，人工智能有望在更多领域取得突破，为人类社会带来更多的便利和福祉。\n",
      "\n",
      "6. 未来展望\n",
      "6.1 技术突破\n",
      "未来，人工智能技术有望在以下几个方面取得突破：一是算法的优化和创新，提高模型的效率和准确性；二是计算能力的提升，支持更复杂的模型和更大规模的数据处理；三是跨学科研究的深入，推动人工智能与其他领域的融合。\n",
      "6.2 应用拓展\n",
      "随着技术的进步，人工智能的应用领域将进一步拓展。未来，人工智能有望在更多领域发挥重要作用，如环境保护、能源管理、智能制造等。人工智能将成为推动社会进步的重要力量。\n",
      "\n",
      "7. 结论\n",
      "人工智能作为一门快速发展的科学，正在改变着人类社会的运行方式。通过不断的技术创新和应用拓展，人工智能将为人类社会带来更多的便利和福祉。然而，人工智能的发展也面临着诸多挑战，需要社会各界共同努力，推动人工智能的健康发展。' metadata={'source': './asset/load/09-ai1.txt'}\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-06T07:22:20.628605Z",
     "start_time": "2025-08-06T07:22:17.791129Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 1.导入相关依赖\n",
    "from langchain_community.vectorstores import FAISS\n",
    "from langchain_openai import OpenAIEmbeddings\n",
    "from langchain_core.documents import Document\n",
    "\n",
    "# 2.定义文档\n",
    "document_1 = Document(\n",
    "    page_content=\"经济复苏：美国经济正在从疫情中强劲复苏，失业率降至历史低点。！\",\n",
    ")\n",
    "document_2 = Document(\n",
    "    page_content=\"基础设施：政府将投资1万亿美元用于修复道路、桥梁和宽带网络。\",\n",
    ")\n",
    "document_3 = Document(\n",
    "    page_content=\"气候变化：承诺到2030年将温室气体排放量减少50%。\",\n",
    ")\n",
    "document_4 = Document(\n",
    "    page_content=\" 医疗保健：降低处方药价格，扩大医疗保险覆盖范围。\",\n",
    ")\n",
    "document_5 = Document(\n",
    "    page_content=\"教育：提供免费的社区大学教育。。\",\n",
    ")\n",
    "document_6 = Document(\n",
    "    page_content=\"科技：增加对半导体产业的投资以减少对外国供应链的依赖。。\",\n",
    ")\n",
    "document_7 = Document(\n",
    "    page_content=\"外交政策：继续支持乌克兰对抗俄罗斯的侵略。\",\n",
    ")\n",
    "document_8 = Document(\n",
    "    page_content=\"枪支管制：呼吁国会通过更严格的枪支管制法律。\",\n",
    ")\n",
    "document_9 = Document(\n",
    "    page_content=\"移民改革：提出全面的移民改革方案。\",\n",
    ")\n",
    "document_10 = Document(\n",
    "    page_content=\"社会正义：承诺解决系统性种族歧视问题。\",\n",
    ")\n",
    "documents = [\n",
    "    document_1,\n",
    "    document_2,\n",
    "    document_3,\n",
    "    document_4,\n",
    "    document_5,\n",
    "    document_6,\n",
    "    document_7,\n",
    "    document_8,\n",
    "    document_9,\n",
    "    document_10,\n",
    "]\n",
    "\n",
    "# 3.创建向量存储\n",
    "embeddings = OpenAIEmbeddings(\n",
    "    model=\"text-embedding-3-large\"\n",
    ")\n",
    "\n",
    "# 4.将文档向量化，添加到向量数据库索引中，得到向量数据库对象\n",
    "db = FAISS.from_documents(documents, embeddings)\n",
    "\n",
    "# 5.获取检索器\n",
    "retriever = db.as_retriever(search_kwargs={\"k\": 4}) #这里设置返回的文档数\n",
    "\n",
    "docs = retriever.invoke(\"经济政策\")\n",
    "for i, doc in enumerate(docs):\n",
    "    print(f\"\\n结果 {i+1}:\\n{doc.page_content}\\n\")\n"
   ],
   "id": "20273f7f4e762e95",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "结果 1:\n",
      "经济复苏：美国经济正在从疫情中强劲复苏，失业率降至历史低点。！\n",
      "\n",
      "\n",
      "结果 2:\n",
      "科技：增加对半导体产业的投资以减少对外国供应链的依赖。。\n",
      "\n",
      "\n",
      "结果 3:\n",
      "外交政策：继续支持乌克兰对抗俄罗斯的侵略。\n",
      "\n",
      "\n",
      "结果 4:\n",
      "基础设施：政府将投资1万亿美元用于修复道路、桥梁和宽带网络。\n",
      "\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 2、分数阈值查询\n",
   "id": "b8b5ef971a12ad5f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-06T07:25:23.065812Z",
     "start_time": "2025-08-06T07:25:22.147453Z"
    }
   },
   "cell_type": "code",
   "source": [
    "retriever = db.as_retriever(\n",
    "    search_type=\"similarity_score_threshold\",\n",
    "    search_kwargs={\"score_threshold\":0.1}\n",
    ")\n",
    "docs = retriever.invoke(\"经济政策\")\n",
    "for doc in docs:\n",
    "    print(f\"📌 内容: {doc.page_content}\")"
   ],
   "id": "935f4a16342befed",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "📌 内容: 经济复苏：美国经济正在从疫情中强劲复苏，失业率降至历史低点。！\n"
     ]
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 3、MMR搜索\n",
    "\n"
   ],
   "id": "5d2bc7afa4a8885f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-06T07:26:03.605640Z",
     "start_time": "2025-08-06T07:26:02.624560Z"
    }
   },
   "cell_type": "code",
   "source": [
    "retriever = db.as_retriever(search_type=\"mmr\")\n",
    "\n",
    "docs = retriever.invoke(\"经济政策\")\n",
    "for  doc  in  docs:\n",
    "    print(f\"📌 内容: {doc.page_content}\")"
   ],
   "id": "b3a8911ff4536a3a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "📌 内容: 经济复苏：美国经济正在从疫情中强劲复苏，失业率降至历史低点。！\n",
      "📌 内容: 外交政策：继续支持乌克兰对抗俄罗斯的侵略。\n",
      "📌 内容: 基础设施：政府将投资1万亿美元用于修复道路、桥梁和宽带网络。\n",
      "📌 内容: 社会正义：承诺解决系统性种族歧视问题。\n"
     ]
    }
   ],
   "execution_count": 14
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
